'use strict';Object.defineProperty(exports, "__esModule", { value: true });var _slicedToArray = function () {function sliceIterator(arr, i) {var _arr = [];var _n = true;var _d = false;var _e = undefined;try {for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {_arr.push(_s.value);if (i && _arr.length === i) break;}} catch (err) {_d = true;_e = err;} finally {try {if (!_n && _i["return"]) _i["return"]();} finally {if (_d) throw _e;}}return _arr;}return function (arr, i) {if (Array.isArray(arr)) {return arr;} else if (Symbol.iterator in Object(arr)) {return sliceIterator(arr, i);} else {throw new TypeError("Invalid attempt to destructure non-iterable instance");}};}();exports.



















isAbsolute = isAbsolute;exports.




isBuiltIn = isBuiltIn;exports.






isExternalModule = isExternalModule;exports.






isExternalModuleMain = isExternalModuleMain;exports.

















isScoped = isScoped;exports.




isScopedMain = isScopedMain;exports['default'] =






























































resolveImportType;var _path = require('path');var _isCoreModule = require('is-core-module');var _isCoreModule2 = _interopRequireDefault(_isCoreModule);var _resolve = require('eslint-module-utils/resolve');var _resolve2 = _interopRequireDefault(_resolve);var _packagePath = require('./packagePath');function _interopRequireDefault(obj) {return obj && obj.__esModule ? obj : { 'default': obj };}function baseModule(name) {if (isScoped(name)) {var _name$split = name.split('/'),_name$split2 = _slicedToArray(_name$split, 2),scope = _name$split2[0],_pkg = _name$split2[1];return String(scope) + '/' + String(_pkg);}var _name$split3 = name.split('/'),_name$split4 = _slicedToArray(_name$split3, 1),pkg = _name$split4[0];return pkg;}function isInternalRegexMatch(name, settings) {var internalScope = settings && settings['import/internal-regex'];return internalScope && new RegExp(internalScope).test(name);}function isAbsolute(name) {return typeof name === 'string' && (0, _path.isAbsolute)(name);} // path is defined only when a resolver resolves to a non-standard path
function isBuiltIn(name, settings, path) {if (path || !name) {return false;}var base = baseModule(name);var extras = settings && settings['import/core-modules'] || [];return (0, _isCoreModule2['default'])(base) || extras.indexOf(base) > -1;}function isExternalModule(name, path, context) {if (arguments.length < 3) {throw new TypeError('isExternalModule: name, path, and context are all required');}return (isModule(name) || isScoped(name)) && typeTest(name, context, path) === 'external';}function isExternalModuleMain(name, path, context) {if (arguments.length < 3) {throw new TypeError('isExternalModule: name, path, and context are all required');}return isModuleMain(name) && typeTest(name, context, path) === 'external';}var moduleRegExp = /^\w/;function isModule(name) {return name && moduleRegExp.test(name);}var moduleMainRegExp = /^[\w]((?!\/).)*$/;function isModuleMain(name) {return name && moduleMainRegExp.test(name);}var scopedRegExp = /^@[^/]+\/?[^/]+/;function isScoped(name) {return name && scopedRegExp.test(name);}var scopedMainRegExp = /^@[^/]+\/?[^/]+$/;function isScopedMain(name) {return name && scopedMainRegExp.test(name);}function isRelativeToParent(name) {return (/^\.\.$|^\.\.[\\/]/.test(name));}var indexFiles = ['.', './', './index', './index.js'];function isIndex(name) {return indexFiles.indexOf(name) !== -1;}function isRelativeToSibling(name) {return (/^\.[\\/]/.test(name));}function isExternalPath(path, context) {if (!path) {return false;}var settings = context.settings;var packagePath = (0, _packagePath.getContextPackagePath)(context);if ((0, _path.relative)(packagePath, path).startsWith('..')) {return true;}var folders = settings && settings['import/external-module-folders'] || ['node_modules'];return folders.some(function (folder) {var folderPath = (0, _path.resolve)(packagePath, folder);var relativePath = (0, _path.relative)(folderPath, path);return !relativePath.startsWith('..');});}function isInternalPath(path, context) {if (!path) {return false;}var packagePath = (0, _packagePath.getContextPackagePath)(context);return !(0, _path.relative)(packagePath, path).startsWith('../');}function isExternalLookingName(name) {return isModule(name) || isScoped(name);}function typeTest(name, context, path) {var settings = context.settings;if (isInternalRegexMatch(name, settings)) {return 'internal';}if (isAbsolute(name, settings, path)) {return 'absolute';}if (isBuiltIn(name, settings, path)) {return 'builtin';}if (isRelativeToParent(name, settings, path)) {return 'parent';}if (isIndex(name, settings, path)) {return 'index';}if (isRelativeToSibling(name, settings, path)) {return 'sibling';}if (isExternalPath(path, context)) {return 'external';}if (isInternalPath(path, context)) {return 'internal';}if (isExternalLookingName(name)) {return 'external';}return 'unknown';}function resolveImportType(name, context) {return typeTest(name, context, (0, _resolve2['default'])(name, context));
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb3JlL2ltcG9ydFR5cGUuanMiXSwibmFtZXMiOlsiaXNBYnNvbHV0ZSIsImlzQnVpbHRJbiIsImlzRXh0ZXJuYWxNb2R1bGUiLCJpc0V4dGVybmFsTW9kdWxlTWFpbiIsImlzU2NvcGVkIiwiaXNTY29wZWRNYWluIiwicmVzb2x2ZUltcG9ydFR5cGUiLCJiYXNlTW9kdWxlIiwibmFtZSIsInNwbGl0Iiwic2NvcGUiLCJwa2ciLCJpc0ludGVybmFsUmVnZXhNYXRjaCIsInNldHRpbmdzIiwiaW50ZXJuYWxTY29wZSIsIlJlZ0V4cCIsInRlc3QiLCJwYXRoIiwiYmFzZSIsImV4dHJhcyIsImluZGV4T2YiLCJjb250ZXh0IiwiYXJndW1lbnRzIiwibGVuZ3RoIiwiVHlwZUVycm9yIiwiaXNNb2R1bGUiLCJ0eXBlVGVzdCIsImlzTW9kdWxlTWFpbiIsIm1vZHVsZVJlZ0V4cCIsIm1vZHVsZU1haW5SZWdFeHAiLCJzY29wZWRSZWdFeHAiLCJzY29wZWRNYWluUmVnRXhwIiwiaXNSZWxhdGl2ZVRvUGFyZW50IiwiaW5kZXhGaWxlcyIsImlzSW5kZXgiLCJpc1JlbGF0aXZlVG9TaWJsaW5nIiwiaXNFeHRlcm5hbFBhdGgiLCJwYWNrYWdlUGF0aCIsInN0YXJ0c1dpdGgiLCJmb2xkZXJzIiwic29tZSIsImZvbGRlciIsImZvbGRlclBhdGgiLCJyZWxhdGl2ZVBhdGgiLCJpc0ludGVybmFsUGF0aCIsImlzRXh0ZXJuYWxMb29raW5nTmFtZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFvQmdCQSxVLEdBQUFBLFU7Ozs7O0FBS0FDLFMsR0FBQUEsUzs7Ozs7OztBQU9BQyxnQixHQUFBQSxnQjs7Ozs7OztBQU9BQyxvQixHQUFBQSxvQjs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBa0JBQyxRLEdBQUFBLFE7Ozs7O0FBS0FDLFksR0FBQUEsWTs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7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QUFKLEVBQW1DLENBQUUsT0FBTyxVQUFQLENBQW9CLENBQ3pELElBQUl1QixlQUFlM0IsSUFBZixFQUFxQkksT0FBckIsQ0FBSixFQUFtQyxDQUFFLE9BQU8sVUFBUCxDQUFvQixDQUN6RCxJQUFJd0Isc0JBQXNCckMsSUFBdEIsQ0FBSixFQUFpQyxDQUFFLE9BQU8sVUFBUCxDQUFvQixDQUN2RCxPQUFPLFNBQVAsQ0FDRCxDQUVjLFNBQVNGLGlCQUFULENBQTJCRSxJQUEzQixFQUFpQ2EsT0FBakMsRUFBMEMsQ0FDdkQsT0FBT0ssU0FBU2xCLElBQVQsRUFBZWEsT0FBZixFQUF3QiwwQkFBUWIsSUFBUixFQUFjYSxPQUFkLENBQXhCLENBQVA7QUFDRCIsImZpbGUiOiJpbXBvcnRUeXBlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaXNBYnNvbHV0ZSBhcyBub2RlSXNBYnNvbHV0ZSwgcmVsYXRpdmUsIHJlc29sdmUgYXMgbm9kZVJlc29sdmUgfSBmcm9tICdwYXRoJztcbmltcG9ydCBpc0NvcmVNb2R1bGUgZnJvbSAnaXMtY29yZS1tb2R1bGUnO1xuXG5pbXBvcnQgcmVzb2x2ZSBmcm9tICdlc2xpbnQtbW9kdWxlLXV0aWxzL3Jlc29sdmUnO1xuaW1wb3J0IHsgZ2V0Q29udGV4dFBhY2thZ2VQYXRoIH0gZnJvbSAnLi9wYWNrYWdlUGF0aCc7XG5cbmZ1bmN0aW9uIGJhc2VNb2R1bGUobmFtZSkge1xuICBpZiAoaXNTY29wZWQobmFtZSkpIHtcbiAgICBjb25zdCBbc2NvcGUsIHBrZ10gPSBuYW1lLnNwbGl0KCcvJyk7XG4gICAgcmV0dXJuIGAke3Njb3BlfS8ke3BrZ31gO1xuICB9XG4gIGNvbnN0IFtwa2ddID0gbmFtZS5zcGxpdCgnLycpO1xuICByZXR1cm4gcGtnO1xufVxuXG5mdW5jdGlvbiBpc0ludGVybmFsUmVnZXhNYXRjaChuYW1lLCBzZXR0aW5ncykge1xuICBjb25zdCBpbnRlcm5hbFNjb3BlID0gc2V0dGluZ3MgJiYgc2V0dGluZ3NbJ2ltcG9ydC9pbnRlcm5hbC1yZWdleCddO1xuICByZXR1cm4gaW50ZXJuYWxTY29wZSAmJiBuZXcgUmVnRXhwKGludGVybmFsU2NvcGUpLnRlc3QobmFtZSk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0Fic29sdXRlKG5hbWUpIHtcbiAgcmV0dXJuIHR5cGVvZiBuYW1lID09PSAnc3RyaW5nJyAmJiBub2RlSXNBYnNvbHV0ZShuYW1lKTtcbn1cblxuLy8gcGF0aCBpcyBkZWZpbmVkIG9ubHkgd2hlbiBhIHJlc29sdmVyIHJlc29sdmVzIHRvIGEgbm9uLXN0YW5kYXJkIHBhdGhcbmV4cG9ydCBmdW5jdGlvbiBpc0J1aWx0SW4obmFtZSwgc2V0dGluZ3MsIHBhdGgpIHtcbiAgaWYgKHBhdGggfHwgIW5hbWUpIHsgcmV0dXJuIGZhbHNlOyB9XG4gIGNvbnN0IGJhc2UgPSBiYXNlTW9kdWxlKG5hbWUpO1xuICBjb25zdCBleHRyYXMgPSBzZXR0aW5ncyAmJiBzZXR0aW5nc1snaW1wb3J0L2NvcmUtbW9kdWxlcyddIHx8IFtdO1xuICByZXR1cm4gaXNDb3JlTW9kdWxlKGJhc2UpIHx8IGV4dHJhcy5pbmRleE9mKGJhc2UpID4gLTE7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBpc0V4dGVybmFsTW9kdWxlKG5hbWUsIHBhdGgsIGNvbnRleHQpIHtcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPCAzKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignaXNFeHRlcm5hbE1vZHVsZTogbmFtZSwgcGF0aCwgYW5kIGNvbnRleHQgYXJlIGFsbCByZXF1aXJlZCcpO1xuICB9XG4gIHJldHVybiAoaXNNb2R1bGUobmFtZSkgfHwgaXNTY29wZWQobmFtZSkpICYmIHR5cGVUZXN0KG5hbWUsIGNvbnRleHQsIHBhdGgpID09PSAnZXh0ZXJuYWwnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gaXNFeHRlcm5hbE1vZHVsZU1haW4obmFtZSwgcGF0aCwgY29udGV4dCkge1xuICBpZiAoYXJndW1lbnRzLmxlbmd0aCA8IDMpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdpc0V4dGVybmFsTW9kdWxlOiBuYW1lLCBwYXRoLCBhbmQgY29udGV4dCBhcmUgYWxsIHJlcXVpcmVkJyk7XG4gIH1cbiAgcmV0dXJuIGlzTW9kdWxlTWFpbihuYW1lKSAmJiB0eXBlVGVzdChuYW1lLCBjb250ZXh0LCBwYXRoKSA9PT0gJ2V4dGVybmFsJztcbn1cblxuY29uc3QgbW9kdWxlUmVnRXhwID0gL15cXHcvO1xuZnVuY3Rpb24gaXNNb2R1bGUobmFtZSkge1xuICByZXR1cm4gbmFtZSAmJiBtb2R1bGVSZWdFeHAudGVzdChuYW1lKTtcbn1cblxuY29uc3QgbW9kdWxlTWFpblJlZ0V4cCA9IC9eW1xcd10oKD8hXFwvKS4pKiQvO1xuZnVuY3Rpb24gaXNNb2R1bGVNYWluKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUgJiYgbW9kdWxlTWFpblJlZ0V4cC50ZXN0KG5hbWUpO1xufVxuXG5jb25zdCBzY29wZWRSZWdFeHAgPSAvXkBbXi9dK1xcLz9bXi9dKy87XG5leHBvcnQgZnVuY3Rpb24gaXNTY29wZWQobmFtZSkge1xuICByZXR1cm4gbmFtZSAmJiBzY29wZWRSZWdFeHAudGVzdChuYW1lKTtcbn1cblxuY29uc3Qgc2NvcGVkTWFpblJlZ0V4cCA9IC9eQFteL10rXFwvP1teL10rJC87XG5leHBvcnQgZnVuY3Rpb24gaXNTY29wZWRNYWluKG5hbWUpIHtcbiAgcmV0dXJuIG5hbWUgJiYgc2NvcGVkTWFpblJlZ0V4cC50ZXN0KG5hbWUpO1xufVxuXG5mdW5jdGlvbiBpc1JlbGF0aXZlVG9QYXJlbnQobmFtZSkge1xuICByZXR1cm4gKC9eXFwuXFwuJHxeXFwuXFwuW1xcXFwvXS8pLnRlc3QobmFtZSk7XG59XG5cbmNvbnN0IGluZGV4RmlsZXMgPSBbJy4nLCAnLi8nLCAnLi9pbmRleCcsICcuL2luZGV4LmpzJ107XG5mdW5jdGlvbiBpc0luZGV4KG5hbWUpIHtcbiAgcmV0dXJuIGluZGV4RmlsZXMuaW5kZXhPZihuYW1lKSAhPT0gLTE7XG59XG5cbmZ1bmN0aW9uIGlzUmVsYXRpdmVUb1NpYmxpbmcobmFtZSkge1xuICByZXR1cm4gKC9eXFwuW1xcXFwvXS8pLnRlc3QobmFtZSk7XG59XG5cbmZ1bmN0aW9uIGlzRXh0ZXJuYWxQYXRoKHBhdGgsIGNvbnRleHQpIHtcbiAgaWYgKCFwYXRoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gY29udGV4dDtcbiAgY29uc3QgcGFja2FnZVBhdGggPSBnZXRDb250ZXh0UGFja2FnZVBhdGgoY29udGV4dCk7XG5cbiAgaWYgKHJlbGF0aXZlKHBhY2thZ2VQYXRoLCBwYXRoKS5zdGFydHNXaXRoKCcuLicpKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cblxuICBjb25zdCBmb2xkZXJzID0gc2V0dGluZ3MgJiYgc2V0dGluZ3NbJ2ltcG9ydC9leHRlcm5hbC1tb2R1bGUtZm9sZGVycyddIHx8IFsnbm9kZV9tb2R1bGVzJ107XG4gIHJldHVybiBmb2xkZXJzLnNvbWUoKGZvbGRlcikgPT4ge1xuICAgIGNvbnN0IGZvbGRlclBhdGggPSBub2RlUmVzb2x2ZShwYWNrYWdlUGF0aCwgZm9sZGVyKTtcbiAgICBjb25zdCByZWxhdGl2ZVBhdGggPSByZWxhdGl2ZShmb2xkZXJQYXRoLCBwYXRoKTtcbiAgICByZXR1cm4gIXJlbGF0aXZlUGF0aC5zdGFydHNXaXRoKCcuLicpO1xuICB9KTtcbn1cblxuZnVuY3Rpb24gaXNJbnRlcm5hbFBhdGgocGF0aCwgY29udGV4dCkge1xuICBpZiAoIXBhdGgpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgY29uc3QgcGFja2FnZVBhdGggPSBnZXRDb250ZXh0UGFja2FnZVBhdGgoY29udGV4dCk7XG4gIHJldHVybiAhcmVsYXRpdmUocGFja2FnZVBhdGgsIHBhdGgpLnN0YXJ0c1dpdGgoJy4uLycpO1xufVxuXG5mdW5jdGlvbiBpc0V4dGVybmFsTG9va2luZ05hbWUobmFtZSkge1xuICByZXR1cm4gaXNNb2R1bGUobmFtZSkgfHwgaXNTY29wZWQobmFtZSk7XG59XG5cbmZ1bmN0aW9uIHR5cGVUZXN0KG5hbWUsIGNvbnRleHQsIHBhdGgpIHtcbiAgY29uc3QgeyBzZXR0aW5ncyB9ID0gY29udGV4dDtcbiAgaWYgKGlzSW50ZXJuYWxSZWdleE1hdGNoKG5hbWUsIHNldHRpbmdzKSkgeyByZXR1cm4gJ2ludGVybmFsJzsgfVxuICBpZiAoaXNBYnNvbHV0ZShuYW1lLCBzZXR0aW5ncywgcGF0aCkpIHsgcmV0dXJuICdhYnNvbHV0ZSc7IH1cbiAgaWYgKGlzQnVpbHRJbihuYW1lLCBzZXR0aW5ncywgcGF0aCkpIHsgcmV0dXJuICdidWlsdGluJzsgfVxuICBpZiAoaXNSZWxhdGl2ZVRvUGFyZW50KG5hbWUsIHNldHRpbmdzLCBwYXRoKSkgeyByZXR1cm4gJ3BhcmVudCc7IH1cbiAgaWYgKGlzSW5kZXgobmFtZSwgc2V0dGluZ3MsIHBhdGgpKSB7IHJldHVybiAnaW5kZXgnOyB9XG4gIGlmIChpc1JlbGF0aXZlVG9TaWJsaW5nKG5hbWUsIHNldHRpbmdzLCBwYXRoKSkgeyByZXR1cm4gJ3NpYmxpbmcnOyB9XG4gIGlmIChpc0V4dGVybmFsUGF0aChwYXRoLCBjb250ZXh0KSkgeyByZXR1cm4gJ2V4dGVybmFsJzsgfVxuICBpZiAoaXNJbnRlcm5hbFBhdGgocGF0aCwgY29udGV4dCkpIHsgcmV0dXJuICdpbnRlcm5hbCc7IH1cbiAgaWYgKGlzRXh0ZXJuYWxMb29raW5nTmFtZShuYW1lKSkgeyByZXR1cm4gJ2V4dGVybmFsJzsgfVxuICByZXR1cm4gJ3Vua25vd24nO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXNvbHZlSW1wb3J0VHlwZShuYW1lLCBjb250ZXh0KSB7XG4gIHJldHVybiB0eXBlVGVzdChuYW1lLCBjb250ZXh0LCByZXNvbHZlKG5hbWUsIGNvbnRleHQpKTtcbn1cbiJdfQ==